For a large class of computationally intensive applications, there is a requirement that concurrent tasks be able to simultaneously and non-synchronously access a common region of memory in a manner that does not introduce non-determinism. For low-level languages, such as assembly and C, typically used for computationally intensive applications, it is not generally possible to statically determine if a set of concurrent tasks will access memory in a potentially non-deterministic manner. There is a need for a system that allows concurrent, asynchronous access to a region of memory in a manner that enables the detection of possible non-deterministic behavior.